///*
// *    Copyright (c) 2018-2025, lengleng All rights reserved.
// *
// * Redistribution and use in source and binary forms, with or without
// * modification, are permitted provided that the following conditions are met:
// *
// * Redistributions of source code must retain the above copyright notice,
// * this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// * notice, this list of conditions and the following disclaimer in the
// * documentation and/or other materials provided with the distribution.
// * Neither the name of the pig4cloud.com developer nor the names of its
// * contributors may be used to endorse or promote products derived from
// * this software without specific prior written permission.
// * Author: lengleng (wangiegie@gmail.com)
// */
//
//package com.dengyuanke.upms.common.util;
//
//
//import cn.hutool.core.util.StrUtil;
//import lombok.experimental.UtilityClass;
//import org.springframework.security.core.Authentication;
//import org.springframework.security.core.GrantedAuthority;
//import org.springframework.security.core.context.SecurityContextHolder;
//import sun.security.util.SecurityConstants;
//
//import java.util.ArrayList;
//import java.util.Collection;
//import java.util.List;
//
///**
// * 安全工具类
// *
// * @author L.cm
// */
//@UtilityClass
//public class SecurityUtils {
//	/**
//	 * 获取Authentication
//	 */
//	public Authentication getAuthentication() {
//		return SecurityContextHolder.getContext().getAuthentication();
//	}
//
//	/**
//	 * 获取用户
//	 *
//	 * @param authentication
//	 * @return PigxUser
//	 * <p>
//	 * 获取当前用户的全部信息 EnablePigxResourceServer true
//	 * 获取当前用户的用户名 EnablePigxResourceServer false
//	 */
//	public PigxUser getUser(Authentication authentication) {
//		Object principal = authentication.getPrincipal();
//		if (principal instanceof PigxUser) {
//			return (PigxUser) principal;
//		}
//		return null;
//	}
//
//	/**
//	 * 获取用户
//	 */
//	public PigxUser getUser() {
//		Authentication authentication = getAuthentication();
//		return getUser(authentication);
//	}
//
//	/**
//	 * 获取用户角色信息
//	 *
//	 * @return 角色集合
//	 */
//	public List<Integer> getRoles() {
//		Authentication authentication = getAuthentication();
//		Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
//
//		List<Integer> roleIds = new ArrayList<>();
//		authorities.stream()
//				.filter(granted -> StrUtil.startWith(granted.getAuthority(), SecurityConstants.ROLE))
//				.forEach(granted -> {
//					String id = StrUtil.removePrefix(granted.getAuthority(), SecurityConstants.ROLE);
//					roleIds.add(Integer.parseInt(id));
//				});
//		return roleIds;
//	}
//
//}
